// Copyright 2021 Tencent Inc. All rights reserved.
//
// 商家转账对外API（2025年1月15日升级版本）
//
// 查询电子回单
// [https://pay.weixin.qq.com/doc/v3/merchant/4012716455](https://pay.weixin.qq.com/doc/v3/merchant/4012716455)
// 商户可以通过该接口查看回单申请进度
// 回单状态            含义                                         建议处理方式
// GENERATING         表示电子回单正在生成中                          过段时间重试查询，建议查询时间间隔不低于2分钟
// FINISHED           回单已成功生成，会返回回单文件的下载地址和摘要信息    通过返回的下载地址下载回单文件数据并比较摘要值
// FAILED             电子回单生成失败，会返回具体的失败原因             停止重试查询，查看具体的失败原因
// 请务必对比下载的回单文件的摘要值与查询接口返回的摘要值的一致性，确保得到的回单文件的真实性和完整性。
// 下载地址的有效期为10分钟，超过10分钟后需要重新通过该接口获取下载地址（不需要重新申请）。
//
// API version: 1.0.0

// Code generated by WechatPay APIv3 Generator based on [OpenAPI
// Generator](https://openapi-generator.tech); DO NOT EDIT.

package com.wechat.pay.java.service.mchtransfer.model;

import com.google.gson.annotations.SerializedName;

import static com.wechat.pay.java.core.util.StringUtil.toIndentedString;

/** ElecsignEntity */
public class ElecsignEntity {
    /**
     * 【申请单状态】 GENERATING：生成中，FINISHED: 已完成，FAILED: 已失败
     *
     * <ul>
     *   <li><code>GENERATING</code>: 表示当前电子回单已受理成功并在处理中
     *   <li><code>FINISHED</code>: 表示当前电子回单已处理完成
     *   <li><code>FAILED</code>: 表示当前电子回单生成失败，失败原因字段会返回具体的失败原因
     * </ul>
     */
    @SerializedName("state")
    private String state;

    /** 【申请单创建时间】 申请单的创建时间，按照使用rfc3339所定义的格式，格式为yyyy-MM-DDThh:mm:ss+TIMEZONE */
    @SerializedName("create_time")
    public String createTime;

    /** 【申请单更新时间】 申请单最近的更新时间，按照使用rfc3339所定义的格式，格式为yyyy-MM-DDThh:mm:ss+TIMEZONE */
    @SerializedName("update_time")
    public String updateTime;

    /**
     * 【回单文件摘要类型】 申请单状态为已完成时返回
     *
     * <ul>
     *   <li><code>SHA256</code>: SHA256摘要算法
     *   <li><code>SM3</code>: 国密SM3摘要算法
     * </ul>
     */
    @SerializedName("hash_type")
    public String hashType;

    /** 【回单文件摘要值】 申请单状态为已完成时返回，请务必将下载的回单文件摘要值与该值进行对比，以保证回单文件的完整性和真实性 */
    @SerializedName("hash_value")
    public String hashValue;

    /** 【回单文件下载地址】 申请单状态为已完成时返回，有效期10分钟，过期后可以重新通过该接口获取；下载地址的域名，路径，参数都可能变化，请不要自行拼接 */
    @SerializedName("download_url")
    public String downloadUrl;

    public String getState() {
        return state;
    }

    public void setState(String state) {
        this.state = state;
    }

    public String getCreateTime() {
        return createTime;
    }

    public void setCreateTime(String createTime) {
        this.createTime = createTime;
    }

    public String getUpdateTime() {
        return updateTime;
    }

    public void setUpdateTime(String updateTime) {
        this.updateTime = updateTime;
    }

    public String getHashType() {
        return hashType;
    }

    public void setHashType(String hashType) {
        this.hashType = hashType;
    }

    public String getHashValue() {
        return hashValue;
    }

    public void setHashValue(String hashValue) {
        this.hashValue = hashValue;
    }

    public String getDownloadUrl() {
        return downloadUrl;
    }

    public void setDownloadUrl(String downloadUrl) {
        this.downloadUrl = downloadUrl;
    }

    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append("class ElecsignEntity {\n");
        sb.append("    state: ").append(toIndentedString(state)).append("\n");
        sb.append("    createTime: ").append(toIndentedString(createTime)).append("\n");
        sb.append("    updateTime: ").append(toIndentedString(updateTime)).append("\n");
        sb.append("    hashType: ").append(toIndentedString(hashType)).append("\n");
        sb.append("    hashValue: ").append(toIndentedString(hashValue)).append("\n");
        sb.append("    downloadUrl: ").append(toIndentedString(downloadUrl)).append("\n");
        sb.append("}");
        return sb.toString();
    }
}